package com.atguigu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 在当前项目下，创建一个hello页面 src/main/webapp/hello.jsp；如何找到这个页面？
 *
 *
 *      默认的视图解析器：当前项目下/WEB-INF/pages/*.jsp
 *
 *
 * @author 伟哥
 * @date 2021-05-15 11:14
 */
@Controller
public class HelloWorldController {

    @RequestMapping("/helloworld")
    public String HelloWorld(){
        System.out.println("HelloWorld收到请求，处理中...");
        return "success";
    }

    /**
     * 方式一：相对路径的方式
     *
     * @return
     */
    @RequestMapping("/handle01")
    public String handle01(){
        return "../../hello";
    }

    /**
     * 方式二：使用"forward："前缀
     *
     * 1）、forward：前缀的转发，不会由我们配置的视图解析器，进行拼串
     *  也就是："forward："前缀 + 路径
     *
     * 2）、forward:后面的地址要不要加上"/"？
     *      不加"/"是相对路径【容易出问题】
     *      加上"/"是项目的绝对路径【更加准确】
     *
     *
     *  forward:转发到一个页面
     *  forward:/hello.jsp转发到当前项目下的hello.jsp
     * @return
     */
    @RequestMapping("/handle02")
    public String handle02(){
        return "forward:/hello.jsp";
    }

    /**
     * forward多次转发
     *      forward:/handle02的意思是：
     *          handle03收到请求，转发给handle02 ---> handle02收到请求，在转发到/hello.jsp
     *
     * @return
     */
    @RequestMapping("/handle03")
    public String handle03(){
        return "forward:/handle02";
    }

    /**
     * 方式三：重定向到hello.jsp
     *
     * 1）、【视图解析器，不会进行拼串！！！】
     * 重定向 redirect：重定向的路径
     * 转发   forward：转发的路径
     *
     * 2）、SpringMVC会在路径上，自动拼接项目名
     * 原生的重定向：
     *      response.sndRedirects("/hello.jsp")
     *      原生的Servlet重定向需要加上，/项目名称才能成功。
     *      因为，返回的重定向结果，会被浏览器解析，浏览器不会加上项目名称
     *
     * SpringMVC的重定向
     *      redirect:/hello.jsp：
     *      代表就是从当前项目名，下开始；SpringMVC会为路径，自动拼接上项目名
     *
     *
     * @return
     */
    @RequestMapping("/handle04")
    public String handle04(){
        return "redirect:/hello.jsp";
    }

    /**
     * redirect多次重定向
     *      redirect:/handle04的意思是：
     *          handle05收到请求，重定向给handle04 ---> handle04收到请求，在重定向到/hello.jsp
     * @return
     */
    @RequestMapping("/handle05")
    public String handle05(){
        return "redirect:/handle04";
    }


    /*@RequestMapping("/toLogin")
    public String toLogin(){
        return "login";
    }*/

}
